package stringc

import "fmt"

type StackByte struct {
	List []byte
	Size int
}

func NewStackByte() *StackByte {
	return &StackByte{
		List: make([]byte, 0),
		Size: 0,
	}
}

func (s *StackByte) Push(b byte) {
	s.List = append(s.List, b)
	s.Size++
}

func (s *StackByte) Pop() byte {
	var res byte
	if s.Empty() {
		return res
	}

	res = s.List[s.Size-1]
	s.List = s.List[:s.Size-1]
	s.Size--
	return res
}

func (s *StackByte) Empty() bool {
	if s.Size == 0 {
		return true
	}
	return false
}

func (s *StackByte) GetTop() byte {
	var res byte
	if !s.Empty() {
		return s.List[s.Size-1]
	}
	return res
}

func (s *StackByte) Print() {
	if !s.Empty() {
		fmt.Println(s.Size, string(s.List))
	}
}
